package com.edvard.ormlitedemo;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;

import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import com.edvard.bean.FiancialData;
import com.edvard.bean.FirstSubject;
import com.edvard.bean.SecondSubject;
import com.edvard.util.ArithmeticActivity;
import com.edvard.util.DataString;
import com.edvard.util.DataType;
import com.edvard.util.DatabaseHelper;
import com.j256.ormlite.android.apptools.OrmLiteBaseActivity;
import com.j256.ormlite.dao.Dao;


public class MainActivity extends ArithmeticActivity {
	
	private final String TAG = this.getClass().getName();
	private TextView tv;
	private TextView da;
	private DataString ds;
	private TextView ttb;
	private TextView tti;
	private TextView ttl;
	private TextView ttc;
	private TextView tta;
	private ListView listb;
	private ListView listl;
	
	@SuppressWarnings("deprecation")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tv = (TextView)findViewById(R.id.tv_show);
		da = (TextView)findViewById(R.id.datetv);
		da.setText(ds.StringData());
		
		/*取得控件*/
		ttb = (TextView)findViewById(R.id.tv_total_borrow);
		tti = (TextView)findViewById(R.id.tv_total_interest);
		ttl = (TextView)findViewById(R.id.tv_total_loan);
		ttc = (TextView)findViewById(R.id.tv_total_inerest_income);
		tta = (TextView)findViewById(R.id.tv_total_assets);
		listb = (ListView)findViewById(R.id.lv_deadlineBorrowed);
		listl = (ListView)findViewById(R.id.lv_deadlineLoans);
		
		
		try {
			/*
			 * 创建虚拟数据来计算
			 */
			
			//在一级科目插入一条数据
			FirstSubject person = new FirstSubject();
			person.setSubject_name("个人");
			//返回当前插入的数据，可以取得自动增长的id值
			person = firstSubjectDao.createIfNotExists(person);
			
			//在二级科目插入两条数据
			SecondSubject xiaoming = new SecondSubject();
			xiaoming.setFirst_id(person.get_id());
			xiaoming.setRate(0.5);
			xiaoming.setSubject_name("明标");
			xiaoming = secondSubjectDao.createIfNotExists(xiaoming);
			
			SecondSubject xiaoliang = new SecondSubject();
			xiaoliang.setFirst_id(person.get_id());
			xiaoliang.setRate(0.5);
			xiaoliang.setSubject_name("Andy");
			xiaoliang = secondSubjectDao.createIfNotExists(xiaoliang);
			
			//插入10条借入记录
			for(int i = 0; i < 1; i ++){
				FiancialData data = new FiancialData();
				data.setFirst_id(person.get_id());
				data.setSecond_id(xiaoming.get_id());
				data.setIs_in_history(DataType.NOTINHISTROY);
				double money = 0; 
				Random random = new Random();
				money = random.nextInt(10000)-5;
				data.setMoney(money);
				data.setType_id(DataType.BORROW);
				data.setRate(0.02);
				/**
				 * 选取当前日期的前10天和后10天
				 * 作为开始和结束日期
				 */
				data.setStart_date(shuffTime(System.currentTimeMillis(), -10) + "");
				data.setEnd_date(shuffTime(System.currentTimeMillis(), 10) + "");
				fiancialDataDao.createIfNotExists(data);
			}
			
			//插入10条贷出记录
			for(int i = 0; i < 1; i ++){
				FiancialData data = new FiancialData();
				data.setFirst_id(person.get_id());
				data.setSecond_id(xiaoming.get_id());
				data.setIs_in_history(DataType.NOTINHISTROY);
				double money = 0; 
				Random random = new Random();
				money = random.nextInt(10000)-5;
				data.setMoney(money);
				data.setType_id(DataType.LOAN);
				data.setRate(0.01);
				/**
				 * 选取当前日期的前10天和后10天
				 * 作为开始和结束日期
				 */
				data.setStart_date(shuffTime(System.currentTimeMillis(), -10) + "");
				data.setEnd_date(shuffTime(System.currentTimeMillis(), 10) + "");
				fiancialDataDao.createIfNotExists(data);				
			}
			
			//往andy那边插入10条借入数据
			for(int i = 0; i < 1; i ++){
				FiancialData data = new FiancialData();
				data.setFirst_id(person.get_id());
				data.setSecond_id(xiaoliang.get_id());
				data.setIs_in_history(DataType.NOTINHISTROY);
				double money = 0; 
				Random random = new Random();
				money = random.nextInt(10000)-2;
				data.setMoney(money);
				data.setType_id(DataType.BORROW);
				data.setRate(0.01);
				/**
				 * 选取当前日期的前10天和后10天
				 * 作为开始和结束日期
				 */
				data.setStart_date(shuffTime(System.currentTimeMillis(), -10) + "");
				data.setEnd_date(shuffTime(System.currentTimeMillis(), 10) + "");
				fiancialDataDao.createIfNotExists(data);
			}
			
			
			double allBorrow = getAllBorrow();
			double allPayInterest = getAllPayInterest();
			double allLoan = getAllLoan();
			double allGetInterest = getAllGetInterest();
			double allAssets = getAllAssets();
			

			ttb.setText("$"+String.format("%.2f", allBorrow));
			tti.setText("$"+String.format("%.2f",allPayInterest));
			ttl.setText("$"+String.format("%.2f",allLoan));
			ttc.setText("$"+String.format("%.2f",allGetInterest));
			tta.setText("$"+String.format("%.2f",allAssets));
			
			
			ArrayList<HashMap<String, Object>> listItem = getAllRecentBorrow(); 
	        //生成适配器的Item和动态数组对应的元素  
	        SimpleAdapter listItemAdapterb = new SimpleAdapter(this,listItem,//数据源   
	            R.layout.list_items,//ListItem的XML实现  
	            //动态数组与ImageItem对应的子项          
	            new String[] {"time", "name", "money"},   
	            //ImageItem的XML文件里面的一个ImageView,两个TextView ID  
	            new int[] {R.id.ItemImage, R.id.ItemTitle, R.id.ItemText}  
	        );  
	         
	        //添加并且显示  
	        listb.setAdapter(listItemAdapterb);  
	        
			listItem = getAllRecentLoan(); 
	        //生成适配器的Item和动态数组对应的元素  
	        SimpleAdapter listItemAdapterl = new SimpleAdapter(this,listItem,//数据源   
	            R.layout.list_items,//ListItem的XML实现  
	            //动态数组与ImageItem对应的子项          
	            new String[] {"time", "name", "money"},   
	            //ImageItem的XML文件里面的一个ImageView,两个TextView ID  
	            new int[] {R.id.ItemImage, R.id.ItemTitle, R.id.ItemText}  
	        );  
	         
	        //添加并且显示  
	        listl.setAdapter(listItemAdapterl); 
			
		
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			Log.e(TAG, "数据操作出现了异常");
		}
	}
	
	public void appendTv(String str){
		tv.append(str + "\n");
	}
	
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
	}
}
//public class MainActivity extends OrmLiteBaseActivity<DatabaseHelper> {
//	
//	private TextView tv;
//	private TextView da;
//	private DataString ds;
//	
//	private Dao<FirstSubject, Integer> firstSubjectDao;
//
//	@Override
//	protected void onCreate(Bundle savedInstanceState) {
//		super.onCreate(savedInstanceState);
//		setContentView(R.layout.activity_main);
//		tv = (TextView)findViewById(R.id.tv_show);
//		da = (TextView)findViewById(R.id.datetv);
//		da.setText(ds.StringData());
//		//取得Dao对象
//		try {
//			firstSubjectDao = getHelper().getFirstSubject();
//			
//		} catch (SQLException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		
//		//往数据库插四条记录
////		insertSubjectTest("个人1");
////		insertSubjectTest("个人2");
////		insertSubjectTest("个人3");
////		insertSubjectTest("个人4");
////		appendTv("----查询全部一级科目的名称----");
////		queryAllTest();
////		appendTv("----查询id为1的一级科目名称----");
////		queryById(1);
////		appendTv("----更改id为1的一级科目名称为'公司'----");
////		updateTest();
////		appendTv("----删除id为1的一级科目----");
////		deleteTest();
//		
//	}
//	
//	//插入数据
//	public void insertSubjectTest(String name) {
//		FirstSubject firstSubject;
//		firstSubject = new FirstSubject();
//		firstSubject.setSubject_name(name);
//		firstSubject.setRate(0.01);
//		try {
//			firstSubjectDao.create(firstSubject);
//		} catch (SQLException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//	}
//	
//	//查询表firstSubject的全部数据
//	public void queryAllTest() {
//		// 查询全部一级科目
//		List<FirstSubject> subjects;
//		try {
//			subjects = firstSubjectDao.queryForAll();
//			for(int i = 0; i < subjects.size(); i ++){
//				int id = subjects.get(i).get_id();
//				String subject_name = subjects.get(i).getSubject_name();
//				Log.d("科目id号为" + id + "的名称为：", subject_name);
//				appendTv("科目号为" + id + "的名称为：" + subject_name);
//			}
//		} catch (SQLException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//	}
//	
//	//使用id号查询科目表的数据
//	public void queryById(Integer id){
//		try {
//			FirstSubject firstSubject = firstSubjectDao.queryForId(id);
//			Log.d("找到id为" + id + "的科目的名称为", firstSubject.getSubject_name());
//			appendTv("找到id号为" + id + "的科目名称为" + firstSubject.getSubject_name());
//		} catch (SQLException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		
//	}
//	
//	//更新科目表条目的数据
//	public void updateTest(){
//		try {
//			FirstSubject firstSubject = firstSubjectDao.queryForId(1);
//			Log.d("id为1的值在更改之前名称：", firstSubject.getSubject_name());
//			appendTv("id为1的值在更改之前的名称：" + firstSubject.getSubject_name());
//			firstSubject.setSubject_name("公司");
//			firstSubjectDao.update(firstSubject);
//			firstSubject = firstSubjectDao.queryForId(1);
//			Log.d("id为1的智在更改之后名称：", firstSubject.getSubject_name());
//			appendTv("id为1的智在更改之后的名称" + firstSubject.getSubject_name());
//		} catch (SQLException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		
//	}
//	
//	//删除科目表指定条目的顺序
//	public void deleteTest(){
//		FirstSubject firstSubject = new FirstSubject();
//		firstSubject.set_id(1);
//		try {
//			long length = firstSubjectDao.countOf();
//			Log.d("当前一级科目的表长为", length + "");
//			appendTv("删除之前表的长度为：" + length);
//			firstSubjectDao.delete(firstSubject);
//			length = firstSubjectDao.countOf();
//			Log.d("删除后一级科目的表长为", length + "");
//			appendTv("删除之后便的长度为" + length);
//		} catch (SQLException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//	}
//	
//	public void appendTv(String str){
//		tv.append(str + "\n");
//	}
//	
//	@Override
//	public boolean onCreateOptionsMenu(Menu menu) {
//		// Inflate the menu; this adds items to the action bar if it is present.
//		getMenuInflater().inflate(R.menu.main, menu);
//		return true;
//	}
//
//}
